


    <template>
        <el-dialog :title="!dataForm.id ? '新建' :'编辑'"
                   :close-on-click-modal="false" append-to-body
                   :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
                   width="600px"
                   @close='goBack()'>
        <el-row :gutter="15" class="">
    <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="100px" label-position="right" >
    <template v-if="!loading">
        <!-- 具体表单 -->
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="url"              align="left"
 prop="url" >
        <JnpfInput   v-model="dataForm.url" @change="changeData('url',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.url" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="名称"              align="left"
 prop="name" >
        <JnpfInput   v-model="dataForm.name" @change="changeData('name',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.name" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="参数1"              align="left"
 prop="param1" >
        <JnpfInput   v-model="dataForm.param1" @change="changeData('param1',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.param1" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="参数2"              align="left"
 prop="param2" >
        <JnpfInput   v-model="dataForm.param2" @change="changeData('param2',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.param2" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="参数3"              align="left"
 prop="param3" >
        <JnpfInput   v-model="dataForm.param3" @change="changeData('param3',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.param3" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <el-col :span="24" >
        <jnpf-form-tip-item
 label="参数4"              align="left"
 prop="param4" >
        <JnpfInput   v-model="dataForm.param4" @change="changeData('param4',-1)"
 placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.param4" :showCount = "false" >
    </JnpfInput>
    </jnpf-form-tip-item>
        </el-col>
        <!-- 表单结束 -->
    </template>
    </el-form>
    <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
                  ref="selectDialog" @select="addForSelect" @close="closeForSelect"/>
    </el-row>
    <span slot="footer" class="dialog-footer">
                    <div class="upAndDown-button" v-if="dataForm.id">
                <el-button @click="prev" :disabled='prevDis'>
                  {{'上一条'}}
                </el-button>
                <el-button @click="next" :disabled='nextDis'>
                  {{'下一条'}}
                </el-button>
              </div>
              <el-button @click="goBack"> 取 消</el-button>
              <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确 定</el-button>
<el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
            {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>        </span>
    </el-dialog>
    </template>


<script>
    import request from '@/utils/request'
    import {mapGetters} from "vuex";
    import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
    import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
    import { getDefaultCurrentValueUserId } from '@/api/permission/user'
    import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
    import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
    import { thousandsFormat } from "@/components/Generator/utils/index"
    import SelectDialog from '@/components/SelectDialog'

    export default {
        components: { SelectDialog },
        props: [],
        data() {
        return {
            dataFormSubmitType: 0,
            continueBtnLoading: false,
            index: 0,
            prevDis: false,
            nextDis: false,
            allList: [],
            visible: false,
            loading: false,
            btnLoading: false,
            formRef: 'formRef',
            setting:{},
            eventType: '',
            userBoxVisible:false,
            selectDialogVisible: false,
            currTableConf:{},
            dataValueAll:{},
            addTableConf:{
            },
            //可选范围默认值
            ableAll:{
            },
            tableRows:{
        },
            Vmodel:"",
            currVmodel:"",
            dataForm: {
                                url : undefined,
                                name : undefined,
                                param1 : undefined,
                                param2 : undefined,
                                param3 : undefined,
                                param4 : undefined,
            },
            tableRequiredData: {},
            dataRule:
            {
                            url: [
                                {
                                    required: true,
                                    message: '请输入',
                                    trigger: 'blur'
                                },
                        ],
            },
            childIndex:-1,
            interfaceRes: {
                        url:[] ,
                        name:[] ,
                        param1:[] ,
                        param2:[] ,
                        param3:[] ,
                        param4:[] ,
        },
            //掩码配置
            maskConfig: {
                            url: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                            name: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                            param1: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                            param2: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                            param3: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                            param4: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
                },
            //定位属性
            locationScope: {
                },
            }
        },
        computed: {
            ...mapGetters(['userInfo']),


        },
        watch: {},
        created() {
            this.initDefaultData()
            this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
        },
        mounted() {},
        methods: {
            prev() {
                this.index--
                if (this.index === 0) {
                    this.prevDis = true
                }
                this.nextDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.id)
                    }
                }
            },
            next() {
                this.index++
                if (this.index === this.allList.length - 1) {
                    this.nextDis = true
                }
                this.prevDis = false
                for (let index = 0; index < this.allList.length; index++) {
                    const element = this.allList[index];
                    if (this.index == index) {
                        this.getInfo(element.id)
                    }
                }
            },
            getInfo(id) {
                request({
                    url: '/api/scheduletask/Task/'+ id,
                    method: 'get'
                }).then(res => {
                    this.dataInfo(res.data)
                });
            },
            goBack() {
                this.visible = false
                this.$emit('refresh', true)
            },
            changeData(model, index) {
                this.childIndex = index
                let modelAll = model.split("-");
                let faceMode = "";
                for (let i = 0; i < modelAll.length; i++) {
                    faceMode += modelAll[i];
                }
                for (let key in this.interfaceRes) {
                    if (key != faceMode) {
                        let faceReList = this.interfaceRes[key]
                        for (let i = 0; i < faceReList.length; i++) {
                            if (faceReList[i].relationField == model) {
                                let options = 'get' + key + 'Options';
                                if(this[options]){
                                    this[options](true)
                                }
                                this.changeData(key, index)
                            }
                        }
                    }
                }
            },
            changeDataFormData(type, data, model,index,defaultValue) {
                if (type == 2) {
                    for (let i = 0; i < this.dataForm[data].length; i++) {
                        if (index == -1) {
                            this.dataForm[data][i][model] = defaultValue
                        } else if (index == i) {
                            this.dataForm[data][i][model] = defaultValue
                        }
                    }
                } else {
                    this.dataForm[data] = defaultValue
                }
            },
            dataAll(){
            },
            clearData(){
                this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
                this.dataAll()
                this.initDefaultData()

            },
            init(id,isDetail,allList,leftTreeActiveInfo) {
                this.prevDis = false
                this.nextDis = false
                this.allList = allList || []
                if (allList.length) {
                    this.index = this.allList.findIndex(item => item.id === id)
                    if (this.index == 0) {
                        this.prevDis = true
                    }
                    if (this.index == this.allList.length - 1) {
                        this.nextDis = true
                    }
                } else {
                    this.prevDis = true
                    this.nextDis = true
                }
                this.dataForm.id = id || 0;
                this.visible = true;
                this.$nextTick(() => {
                    if(this.dataForm.id){
                        this.loading = true
                        request({
                            url: '/api/scheduletask/Task/'+this.dataForm.id,
                            method: 'get'
                        }).then(res => {
                            this.dataInfo(res.data)
                            this.loading = false
                        });
                    }else{
                        this.dataAll()
                        this.clearData()
                        this.initDefaultData()
                        this.dataForm = { ...this.dataForm, ...leftTreeActiveInfo }
                    }
                });
                this.$store.commit('generator/UPDATE_RELATION_DATA', {})
            },
            //初始化默认数据
            initDefaultData() {

            },
            // 表单提交
            dataFormSubmit(type) {
                this.dataFormSubmitType = type ? type : 0
                this.$refs['formRef'].validate((valid) => {
                    if (valid) {
                        this.request()
                    }
                })
            },
            request() {
                let _data =this.dataList()
                if (this.dataFormSubmitType == 2) {
                    this.continueBtnLoading = true
                } else {
                    this.btnLoading = true
                }
                if (!this.dataForm.id) {
                    request({
                        url: '/api/scheduletask/Task',
                        method: 'post',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) {
                                    this.$nextTick(() => {
                                        this.clearData()
                                        this.initDefaultData()
                                    })
                                    this.continueBtnLoading = false
                                    return
                                }
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }else{
                    request({
                        url: '/api/scheduletask/Task/'+this.dataForm.id,
                        method: 'PUT',
                        data: _data
                    }).then((res) => {
                        this.$message({
                            message: res.msg,
                            type: 'success',
                            duration: 1000,
                            onClose: () => {
                                if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
                                this.visible = false
                                this.btnLoading = false
                                this.$emit('refresh', true)
                            }
                        })
                    }).catch(()=>{
                        this.btnLoading = false
                        this.continueBtnLoading = false
                    })
                }
            },
            openSelectDialog(key,value) {
                this.currTableConf=this.addTableConf[key + value]
                this.currVmodel=key
                this.selectDialogVisible = true
                this.$nextTick(() => {
                    this.$refs.selectDialog.init()
                })
            },
            addForSelect(data) {
                this.closeForSelect()
                for (let i = 0; i < data.length; i++) {
                    let t = data[i]
                    if(this['get'+this.currVmodel]){
                        this['get'+this.currVmodel](t,true)
                    }
                }
            },
            closeForSelect() {
                this.selectDialogVisible = false
            },
            dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
                let timeDataValue = null;
                let timeValue = Number(timeValueData)
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = new Date().getTime()
                    } else if (timeType == 4) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getBeforeData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
                        }
                    } else if (timeType == 5) {
                        let previousDate = '';
                        if (timeTarget == 1 || timeTarget == 2) {
                            previousDate = getDateDay(timeTarget, timeType, timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else if (timeTarget == 3) {
                            previousDate = getLaterData(timeValue)
                            timeDataValue = new Date(previousDate).getTime()
                        } else {
                            timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
                        }
                    }
                }
                return timeDataValue;
            },
            time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
                let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
                let timeDataValue = null
                if (timeRule) {
                    if (timeType == 1) {
                        timeDataValue = timeValue || '00:00:00'
                        if (timeDataValue.split(':').length == 3) {
                            timeDataValue = timeDataValue
                        } else {
                            timeDataValue = timeDataValue + ':00'
                        }
                    } else if (timeType == 2) {
                        timeDataValue = dataValue
                    } else if (timeType == 3) {
                        timeDataValue = this.jnpf.toDate(new Date(), format)
                    } else if (timeType == 4) {
                        let previousDate = '';
                        previousDate = getBeforeTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    } else if (timeType == 5) {
                        let previousDate = '';
                        previousDate = getLaterTime(timeTarget, timeValue)
                        timeDataValue = this.jnpf.toDate(previousDate, format)
                    }
                }
                return timeDataValue;
            },
            dataList(){
                var _data = this.dataForm;
                return _data;
            },
            dataInfo(dataAll){
                let _dataAll =dataAll
                this.dataForm = _dataAll
                this.dataAll()
                this.childIndex=-1
            },
        },
    }

</script>
